package com.xbongbong.saas.domain.dao;

import com.xbongbong.saas.domain.entity.CallCenterOrganizationEntity;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author youli.chen
 * @version v1.0
 * @description: 呼叫中心组织DAO
 * @date 2019/2/13 19:06
 * @since v1.0
 */
public interface CallCenterOrganizationDao {

    /**
     * 新增呼叫中心组织
     *
     * @param organizationEntity
     * @return
     */
    Integer insert(CallCenterOrganizationEntity organizationEntity);

    /**
     * 更新呼叫中心组织
     *
     * @param organizationEntity
     * @return
     */
    Integer update(CallCenterOrganizationEntity organizationEntity);

    /**
     * 根据ID删除呼叫中心组织
     *
     * @return
     */
    Integer deleteByKey(@Param("key") Long key, @Param("corpid") String corpid);

    /**
     * 根据ID查询呼叫中心组织详情
     *
     * @return
     */
    CallCenterOrganizationEntity getByKey(@Param("key") Long key, @Param("corpid") String corpid);

    /**
     * 根据条件查询呼叫中心组织列表
     *
     * @return
     */
    List<CallCenterOrganizationEntity> findEntitys(@Param("param") Map<String, Object> param);

    /**
     * 根据条件统计呼叫中心组织条数
     *
     * @return
     */
    Integer getEntitysCount(@Param("param") Map<String, Object> param);

    /**
     * 获取公司在该平台的公司信息
     * @param params
     * @return
     */
    List<String> findCorps(Map<String, Object> params);

    /**
     * 获取开启了呼叫中心的公司总数
     * @return
     */
    Integer getCorpsCount();

    /**
     * 更新企业的预充值余额
     * @param corpid 公司ID
     * @param moduleType 话务中心平台  参考CallCenterTypeEnum
     * @param balance  预充值余额
     */
    void updateBalance(@Param("corpid") String corpid, @Param("moduleType") Integer moduleType, @Param("balance") BigDecimal balance);
}
